package common.model.Entity;

import lombok.Getter;
import lombok.Setter;

/**
 * 学期实体类，继承自 {@link BaseEntity}。
 * <p>
 * 用于表示学期信息，例如年份与季节（如：2025-春季学期）。
 * </p>
 */
@Getter
@Setter
public class Semester extends BaseEntity {

    /**
     * 学年（例如：2025）
     */
    private Integer year;

    /**
     * 学期季节（例如：春季、秋季）
     */
    private String season;

    /**
     * 将学期对象转换为字符串。
     * <p>输出格式为：{@code year-season}。</p>
     *
     * @return 学期的字符串表示
     */
    @Override
    public String toString() {
        return year + "-" + season;
    }

    /**
     * 根据字符串构造学期对象。
     * <p>
     * 输入的字符串格式应为 {@code "年份-季节"}，例如 {@code "2025-春季"}。
     * </p>
     *
     * @param sem 学期字符串
     * @throws NumberFormatException 如果年份部分无法解析为整数
     * @throws ArrayIndexOutOfBoundsException 如果输入格式不符合 "year-season"
     */
    public Semester(String sem) {
        String[] ss = sem.split("-");
        this.year = Integer.parseInt(ss[0]);
        this.season = ss[1];
    }
}
